If you book a multi-city flight as Laura suggests, it will not be significantly more expensive than a standard round trip flight, and will save you time and money getting to and from the ports.
Go to Kayak Flights Multi-city Search: https://www.kayak.com/flights?mc=y
For your first leg, put in your home city as your "From" and NCE (Nice airport) as your "To." Remember that you land in Europe the day after you depart from North America, so if you want three days in Nice before the cruise, you will have to fly out 4 or 5 days before.
For your second leg, put in VCE (Venice airport) as your "From" and your home city as your "To." Again, check dates carefully.
See what comes up. On the left, you can choose connection airports, and if you don't want Frankfurt or Paris, you can uncheck them. I have no problem with changing in Frankfurt, but I know others do. Munich, Amsterdam and Zurich are three airports that get good marks for plane changing. But since we don't know where you're flying from, we don't know what options you will have. You can also select duration of connection (you don't want too long or too short), or limit airlines or airports used - very handy.
Once you have a flight, try to book directly with the airline, as it's much easier to deal with them rather than a third party if anything goes wrong.
At the time you are going, I don't know if there are any nonstop flights from the US to Nice or Venice. In high season, there is a nonstop from JFK to Nice on Delta, and nonstops to Venice from JFK on Delta, Atlanta on Delta, Philadelphia on American, and Newark on United. Otherwise, you'll have to change somewhere in Europe to get to these cities. It's still easier than getting from Vienna airport to the train station to your cities.